pub fn dp_rec_mc(amount: u32) -> u32 {
    //直接贪心
     // 定义币种种类，已按降序排列，以便尽量使用大面值纸币减少纸币数量
     let coins = [100, 50, 30, 20, 10, 5, 2, 1];
     // 创建一个向量，长度为amount+1，初始化为一个较大数
     let mut dp = vec![amount + 1; (amount + 1) as usize];
     // 初始状态，0金额时需要的纸币数为0
     dp[0] = 0;
 
     // 开始填充dp数组，目标是计算dp[amount]
     for i in 1..=amount {
         for &coin in &coins {
             if i >= coin {
                 dp[i as usize] = dp[i as usize].min(dp[(i - coin) as usize] + 1);
             }
         }
     }
 
     // 如果dp[amount]没有被更新，说明无法找零，否则返回最小纸币数
     if dp[amount as usize] > amount {
         0 // 如果金额无法找零，返回0
     } else {
         dp[amount as usize]
     }
}
